package com.shujia.jichu

/**
 * 函数作为函数的参数传递的应用
 */
object Demo11Fun {
  def main(args: Array[String]): Unit = {
    //创建一个数组
    val array: Array[Int] = Array(11, 22, 33, 44, 55, 66, 77, 88)

    //需求：遍历数组中的元素
    for (elem <- array) {
      println(elem)
    }

    println("=" * 100)

    //定义一个函数，参数是Int类型，返回值是Unit类型的
    def f(i: Int): Unit = {
      println(i)
    }

    //foreach函数的作用是将数组中的每一个元素取出来当作参数传递给后面的函数
    array.foreach(f)

    println("=" * 100)
    //使用匿名函数的方式传递参数
    array.foreach((i:Int)=>println(i))
    println("=" * 100)
    //简写1 参数的类型可以做自动类型推断
    array.foreach(i=>println(i))
    println("=" * 100)
    //简写2 如果函数体中参数只使用了一次，可以使用_代替
    array.foreach(println(_))
    println("=" * 100)
    /**
     *
     * Any --> 等同于java中的Object
     * scala中println函数的源码
     * def println(x: Any) = Console.println(x)
     * def f(x: Int) = println(x)
     *
     * 面向函数编程也可以使用多态
     */
    array.foreach(println)





  }
}
